c++ - 从 C++ 类制作 Visual C++ DLL
全部标签 我正在尝试使用VisualStudioCommunity2013为Notepad++编写一个插件dll从解决方案构建得很好,如果我将它复制到notepad++/plugins目录,我可以测试功能。但是,我现在想调试它,但无法启动调试器。我尝试关注paint.netguide但我仍然得到错误Unabletostartprogram.....dll在配置属性-调试下的项目属性中,我有以下设置:Command=C:\tools\Notepad++\notepad++.exeWorkingDirectory=C:\tools\Notepad++配置属性-构建事件-我拥有的构建后事件:Comma
我一直在尝试编写代码来实现一个成员函数,该成员函数可以通过将其声明为类中的友元来访问类的私有(private)数据。但是我的代码失败了,我似乎无法弄清楚它有什么问题:#includeusingnamespacestd;classA;classB{private:intb;//ThisistobeaccessedbymemberfunctionofApublic:friendvoidA::accessB();};classA{private:inta;public:voidaccessB();};voidA::accessB(){By;y.b=100;cout我正在尝试使用getAcce
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我承认这个问题听起来很笼统。但毕竟,从DLL导出类是一个普遍而困难的话题,坦率地说,我目前在一个相当普遍的层面上感到困惑。简短的问题:C++和DLL中的面向对象编程如何结合在一起?长题:看完this和this,我有点失望和困惑,因为我想知道如果DLL边界不允许共享对象(假设两个DLL使用了不同的编译器或编译器版本),面向对象编程如何与DLL一起工作。导出类的唯一选项是这些(如here或here所述):导出
我正在尝试为自己制作一个从进程中提取/释放dll的工具。我已经体验过LoadLibrary和注入(inject),但这次逻辑似乎不适用。这是我的代码:HMODULEfindModuleOffset(HANDLEproc,char*mod_name){//Findsmoduleaddressinspecifiedprocess.0ifnotfoundHMODULEhMods[2048];DWORDmodules_byte_size;if(EnumProcessModules(proc,hMods,sizeof(hMods),&modules_byte_size)){for(unsigne
我正在尝试从c++dll中使用pantheios日志记录框架。我已经成功构建了dll,它通过我的测试应用程序(C++MFC应用程序)执行。我使用了隐式链接,包括:#include#include#include我的DllMain使用以下调用初始化pantheios:extern"C"constcharPANTHEIOS_FE_PROCESS_IDENTITY[]="FinishingLineController";BOOLAPIENTRYDllMain(HMODULEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){switch(ul_
我有一个类MyClassA。在其构造函数中,我将指针传递给B类的实例。我有一些与此相关的非常基本的问题。(1)首先,下面的代码是否正确?(浅拷贝的代码和methodA()中的代码)MyClassA::MyClassA(B*b){this.b=b;}voidMyClassA::methodA(){inti;i=b.getFooValue();//ShouldIratherbeusingthearrowoperatorhere??//i=b->getFooValue()}(2)我猜我不需要担心在析构函数~MyClassA()中删除MyClassA.b的内存,因为它没有分配。我对吗?谢谢更新
我需要帮助将C++头文件转换为Delphi。下面是原始头文件和我的Delphi翻译。C++header:#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#ifdefDVP7010BDLL_EXPORTS#defineDVP7010BDLL_API__declspec(dllexport)#else#defineDVP7010BDLL_API__declspec(dllimport)#endif#defineMAXBOARDS4#defineMAXDEVS4#defineID_NEW_FRAME37810#defineID_MUX0_NEW
好的,我正在尝试创建一个C++DLL,然后我可以在C#应用程序中调用和引用它。我已经使用大量指南制作了一个简单的dll,但是当我尝试在C#应用程序中引用它时,出现错误无法加载DLL“SDES.dll”:找不到指定的模块。该程序的代码如下(请耐心等待,我将包含所有文件)//ThesearetheDLLFiles.#ifndefTestDLL_H#defineTestDLL_Hextern"C"{//Returnsa+b__declspec(dllexport)doubleAdd(doublea,doubleb);//Returnsa-b__declspec(dllexport)doubl
我在WindowsXP上使用VisualStudioC++2005。我已经使用VisualStudioC++2005创建了一个DLL共享库。但是,我不确定如何链接它。通常我刚刚创建了静态库(*.lib)。我链接的方式是否与链接库时的方式相同。通过使用属性C/C++和链接器常规属性并选择header和库路径的路径?非常感谢您的任何建议。 最佳答案 当您创建DLL时,应该创建一个用于动态链接的.lib文件。您可以像使用静态.lib文件一样使用它们。 关于c++-在VisualStudio中链
非托管C++.dll如何知道托管C#.dll的位置?一些背景:我有一个导入类型库(.tlb)的c++.dll,在其中一个c++函数中,我实例化了一个指向c#.dll中函数的指针。然后,使用该指针,我可以在C++中调用C#函数。我想知道c++.dll是如何知道c#.dll在哪里的?此外,是否有更好的方法来进行此类编码?.tlb是否需要与c#.dll位于同一目录中? 最佳答案 完成上述任务的一种方法是使用regasm命令向MicrosoftWindows注册表注册C#dll文件。此命令EXE包含在VisualStudios的发行版中。命